import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
from maux import *
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return X ** 2 # ufunc verzia funkcie
X = np.linspace(-3, 3, 6*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y = f(X) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 9) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Graf funkcie $y = x^2$") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
#ax.grid() # pravoúhla sieť
ax.set_yticks(range(0, 9+1)) # kótovanie y-ovej osi
## graf funkcie
ax.plot(X, Y)
### archivácia obrázka
#plt.savefig("<meno súboru>.png")
### samotné zobrazenie
plt.show()
plt.close('all')
Vyšetrenie priebehu kvadratickej funkcie danej rovnicou
#####
##### vyšetrenie priebehu funkcie
#####
#### vstupné údaje
def f(X): return X ** 2 # ufunc verzia funkcie
X = np.linspace(-3, 3, 6*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 9) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Priebeh funkcie $y = x^2$") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
ax.grid() # pravoúhla sieť
ax.set_yticks(range(0, 9+1)) # kótovanie y-ovej osi
## monotónnosť funkcie
X1 = X[X <= 0] # interval, na ktorom je funkcia klesajúca
ax.plot(X1, f(X1), label="klesajúca")
X2 = X[X >= 0] # interval, na ktorom je funkcia rastúca
ax.plot(X2, f(X2), label="rastúca")
## extrémy funkcie
ax.plot(0, f(0), 'o', label="ostré minimum")
## legenda
#ax.legend()
ax.legend(loc='center') # umiestenie v strede diagramu
### archivácia obrázka
#plt.savefig("<meno súboru>.png")
### samotné zobrazenie
plt.show()
plt.close('all')
Nakreslenie grafu a vyšetrenie priebehu kvadratickej funkcie danej rovnicou
Riešenie je rozdelené do dvoch častí: v prvej časti je nakreslený graf funkcie, v druhej je vyšetrený priebeh funkcie.
Návod. Výraz na pravej strane definičnej rovnice upravíme najprv na štvorec
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return X ** 2 - X - 1 # ufunc verzia funkcie
X = np.linspace(-2, 3, 5*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y = f(X) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 11) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Graf funkcie $y = x^2-x-1$") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
#ax.grid() # pravoúhla sieť
## graf funkcie
ax.plot(X, Y)
### archivácia obrázka
#plt.savefig("<meno súboru>.png")
### samotné zobrazenie
plt.show()
plt.close('all')
#####
##### vyšetrenie priebehu funkcie
#####
#### vstupné údaje
def f(X): return X ** 2 - X - 1 # ufunc verzia funkcie
X = np.linspace(-2, 3, 5*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 11) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Priebeh funkcie $y = x^2-x-1$") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
ax.grid() # pravoúhla sieť
## monotónnosť funkcie
X1 = X[X <= 1/2] # interval, na ktorom je funkcia klesajúca
ax.plot(X1, f(X1), label="klesajúca")
X2 = X[X >= 1/2] # interval, na ktorom je funkcia rastúca
ax.plot(X2, f(X2), label="rastúca")
## extrémy funkcie
ax.plot(1/2, f(1/2), 'o', label="ostré minimum")
ax.annotate(r"$\left[\frac{1}{2},-\frac{5}{4}\right]$", xy=(1/2, -5/4), va='top', ha='center')
## nulové body funkcie
ax.plot([(1-np.sqrt(5))/2, (1+np.sqrt(5))/2], [0, 0], 'o', label="nulový bod")
ax.annotate(r"$\left[\frac{1-\sqrt{5}}{2},0\right]$", xy=((1-np.sqrt(5))/2, 0), va='bottom')
ax.annotate(r"$\left[\frac{1+\sqrt{5}}{2},0\right]$", xy=((1+np.sqrt(5))/2, 0), va='bottom', ha='right')
## legenda
ax.legend(loc='center')
### archivácia obrázka
#plt.savefig("<meno súboru>.png")
### samotné zobrazenie
plt.show()
plt.close('all')
V nasledujúcich príkladoch budeme kresliť grafy a vyšetrovať priebeh vybraných kvadratických funkcií. Pretože tieto funkcie majú neohraničený definičný obor, budeme pri zostrojovaní grafu každej takejto funkcie vykreslovať len jej zaujímavú časť. Pri vyšetrovani priebehu týchto funkcií treba určiť:
Súradnice význačných bodov, ktoré sú zrejmé z grafu, netreba explicitne uvádzať. Doporučujeme riešenie rozdeliť do dvoch častí:
#####
##### šablóna riešenia (nakreslenie grafu a vyšetrenie priebehu funkcie)
#####
#### vstupné údaje
#def f(X): return None # ufunc verzia funkcie
#X = np.linspace(None, None, None+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
#Y = f(X) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
#fig, ax = plt.subplots()
#fig.set_size_inches(6, 4) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
#init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
#ax.set_title("Graf funkcie $y = ax^2+bx+c$") # pomenovanie diagramu
#ax.set_title("Priebeh funkcie $y = ax^2+bx+c$") # pomenovanie diagramu
#ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
#ax.grid() # pravoúhla sieť
## graf funkcie
#ax.plot(X, Y)
## monotónnosť funkcie
#X1 = X[X <= None] # interval, na ktorom je funkcia monotónna
#ax.plot(X1, f(X1), label="monotónna")
## extrémy funkcie
#ax.plot(None, f(None), 'o', label="extrém")
#ax.annotate(r"[None,f(None)]", xy=(None, f(None)) # prípadná anotácia význačného bodu
## nulové body funkcie
#ax.plot(None, 0, 'o', label="nulový bod")
#ax.annotate(r"[None,0]", xy=(None, 0)) # prípadná anotácia význačného bodu
## legenda
#ax.legend()
#ax.legend(loc='center') # umiestenie v strede diagramu
### archivácia obrázka
#plt.savefig("<meno súboru>.png")
### samotné zobrazenie
#plt.show()
#plt.close('all')
Nájdite kvadratickú funkciu, ktorej graf je parabola prechádzajúca bodmi , a . Overte graficky, či vaše riešenie je správne.
###
### šablóna riešenia
###
## zadanie
fig, ax = plt.subplots()
fig.set_size_inches(4, 10)
init_subplot(ax)
ax.set_aspect('equal')
ax.grid()
ax.set_yticks(range(-5, 5+1))
ax.plot([-1, 0, 1], [-5, -4, 1], 'o')
## riešenie
#def f(X): return None
#X = np.linspace(-3, 1.5, 9*10+1)
#Y = f(X)
#ax.plot(X, Y, label="riešenie")
## dokončenie
#ax.legend()
plt.show()
plt.close('all')
V
nasledujúcich príkladoch si ukážeme, ako kresliť grafy parametrických
systémov kvadratických funkcií. V niektorých z nich sa vykreslenie deje
pomocou interaktívnych prvkov knižnice ipywidgets
.
Dokumentácia:
V príkladoch si tiež aktívne precvičíme niektoré elementárne transformácie grafov funkcií.
Nakreslenie grafov kvadratických funkcií
Pokyny. Nakreslite grafy pre iný výber parametrov.
#####
##### grafy parametrického systému funkcií
#####
#### vstupné údaje
def f(X, a): return a * X ** 2
X = np.linspace(-3, 3, 6*10+1)
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 18)
### diagram
init_subplot(ax)
ax.set_title(r"Grafy funkcií $y = ax^2$")
ax.set_aspect('equal')
ax.grid()
ax.set_ylim(-9.5, 9.5)
ax.set_xticks(range(-3, 3+1))
ax.set_yticks(range(-9, 9+1))
## grafy funkcií
for a in [-2, -1, -1/2, 1/2, 1, 2]:
ax.plot(X, f(X, a), label=r"$a = {}$".format(a))
## legenda
#ax.legend()
ax.legend(loc='upper center')
### archivácia obrázka
#plt.savefig("<meno súboru>.png")
### samotné zobrazenie
plt.show()
plt.close('all')
To isté ako v predchadzajúcom príklade, len vykreslenie sa deje pomocou interaktívnych prvkov knižnice ipywidgets
.
#####
##### grafy parametrického systému funkcií (interaktívna verzia)
#####
#### vstupné údaje
def f(X, a): return a * X ** 2
X = np.linspace(-3, 3, 6*10+1)
#### obrázok s grafom funkcie y = ax²
def plot_graph(a):
fig, ax = plt.subplots()
fig.set_size_inches(6, 18)
init_subplot(ax)
ax.set_title(r"Graf funkcie $y = {0}{{x}}^2$".format(a))
ax.grid()
ax.set_ylim(-9.5, 9.5)
ax.set_xticks(range(-3, 3+1))
ax.set_yticks(range(-9, 9+1))
ax.plot(X, f(X, a))
plt.show()
plt.close('all')
#### interaktívne vykreslenie obrázka
import ipywidgets as widgets
widgets.interact(plot_graph,
a=widgets.SelectionSlider(options=[-2, -1, -1/2, 1/2, 1, 2], value=1)
#a=widgets.FloatSlider(min=-2, max=2, value=1, step=0.1) # iný výber parametrov
);
Do jedného obrázka nakreslite grafy kvadratických funkcií
Návod.
Nasledujúci obrázok obsahuje jedno z možných riešení.
Iné riešenie by bolo pomocou interaktívnych prvkov knižnice ipywidgets
.
Do jedného obrázka nakreslite grafy kvadratických funkcií
Návod.
Nasledujúci obrázok obsahuje jedno z možných riešení.
Iné riešenie by bolo pomocou interaktívnych prvkov knižnice ipywidgets
.
Nakreslenie grafu kvadratickej funkcie danej rovnicou vo vrcholovom tvare
#####
##### grafy parametrického systému funkcií (interaktívna verzia)
#####
#### vstupné údaje
def f(X, a, h, k): return a * (X - h) ** 2 + k
X = np.linspace(-3, 3, 6*10+1)
#### obrázok s grafom funkcie y = a(x-h)²+k
def plot_graph(a, h, k):
fig, ax = plt.subplots()
fig.set_size_inches(6, 18)
init_subplot(ax)
ax.set_title(r"Graf funkcie $y = {0}({{x}}-{1})^2+{2}$".format(a, h, k))
ax.set_aspect('equal')
ax.grid()
ax.set_ylim(-9.5, 9.5)
ax.set_yticks(range(-9, 9+1))
ax.plot(X, f(X, a, h, k))
plt.show()
plt.close('all')
#### interaktívne vykreslenie obrázka
import ipywidgets as widgets
widgets.interact(plot_graph,
a=widgets.FloatSlider(min=-2, max=2, value=1, step=0.1),
h=widgets.FloatSlider(min=-2, max=2, value=0, step=0.1),
k=widgets.FloatSlider(min=-2, max=2, value=0, step=0.1)
);
Nakreslenie grafu kvadratickej funkcie danej rovnicou v štandardnom tvare
#####
##### grafy parametrického systému funkcií (interaktívna verzia)
#####
#### vstupné údaje
def f(X, a, b, c): return a * X ** 2 + b * X + c
X = np.linspace(-3, 3, 6*10+1)
#### obrázok s grafom kvadratickej funkcie danej rovnicou y = ax²+bx+c
def plot_graph(a, b, c):
fig, ax = plt.subplots()
fig.set_size_inches(6, 18)
init_subplot(ax)
ax.set_title(r"Graf funkcie $y = {0}{{x}}^2+{1}{{x}}+{2}$".format(a, b, c))
ax.set_aspect('equal')
ax.grid()
ax.set_ylim(-9.5, 9.5)
ax.set_yticks(range(-9, 9+1))
ax.plot(X, f(X, a, b, c))
plt.show()
plt.close('all')
#### interaktívne vykreslenie obrázka
import ipywidgets as widgets
from ipywidgets import Layout
widgets.interact(plot_graph,
a=widgets.FloatSlider(min=-2, max=2, value=1, step=0.1),
b=widgets.FloatSlider(min=-2, max=2, value=0, step=0.1),
c=widgets.FloatSlider(min=-2, max=2, value=0, step=0.1)
);